package org.jeecg.modules.phone.service.impl;

import cn.hutool.core.util.RandomUtil;
import com.aliyun.core.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.aliyun.entity.run.*;
import org.jeecg.modules.phone.entity.*;
import org.jeecg.modules.phone.enums.EntityEnums;
import org.jeecg.modules.phone.enums.TaskEnums;
import org.jeecg.modules.phone.mapper.*;
import org.jeecg.modules.phone.service.IPhoneEntityTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

/**
 * @Description: 实体任务调度
 * @Author: jeecg-boot
 * @Date:   2022-08-31
 * @Version: V1.0
 */
@Service
public class PhoneEntityTaskServiceImpl extends ServiceImpl<PhoneEntityTaskMapper, PhoneEntityTask> implements IPhoneEntityTaskService {
    @Autowired
    PhoneEntityTaskMapper phoneEntityTaskMapper;

    @Autowired
    PhoneEntityMapper phoneEntityMapper;
    @Autowired
    PhoneEntityCmdMapper phoneEntityCmdMapper;



    @Override
    public IPage<PhoneEntityTaskVo> pageList(Page<PhoneEntityTaskVo> page, QueryWrapper<PhoneEntityTask> queryWrapper) {

        return phoneEntityTaskMapper.pageList(page, queryWrapper );
    }

    @Override
    public void onlyCheck(PhoneEntityTask phoneEntityTask1) {
        PhoneEntityTask phoneEntityTask = phoneEntityTaskMapper.selectById(phoneEntityTask1.getId());
        /*改变手机状态*/
        PhoneEntity phoneEntity = phoneEntityMapper.selectById(phoneEntityTask.getEntityId());
        phoneEntity.setEntityStatus(EntityEnums.EntityStatus.RUNNING.getName());
        phoneEntityMapper.updateById(phoneEntity);

//        添加一条绿色jilu
        phoneEntityTaskMapper.updateById(phoneEntityTask
                .setTag("已处理")
        );
        phoneEntityTaskMapper.insert(phoneEntityTask
                .setId(phoneEntityTask.getId() + "1" + RandomUtil.randomString(3))
                .setTaskStatus(TaskEnums.TaskStatus.WAIT.getName())
                .setTag("onlyCheck")
        );
    }

    @Override
    public void taskHx(PhoneEntityTask phoneEntityTask) {
        System.out.println("开始核销。。。。");

        final  String taskId = phoneEntityTask.getId();
        new Thread(new Runnable() {
            @Override
            public void run() {
                checkChildrenTask(taskId);
            }
        }).start();


    }

    private  void checkChildrenTask(String taskId) {
        PhoneEntityTask phoneEntityTask = phoneEntityTaskMapper.selectById(taskId);


        String taskName = "a1";


        /*母号
        挂链接
        任务*/
        //打开抖推猫主页
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa434")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,0  );
            }else{
                PhoneEntityTaskM1Util.asdfa434(phoneEntityTask);
            }
        }
        //搜索关键词游戏

        if(phoneEntityTask.getTaskChildrenId().equals("asdfa435")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,1  );
            }else{
                PhoneEntityTaskM1Util.asdfa435(phoneEntityTask);
            }
        }
        //点击扫码推广下载
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa436")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,2  );
            }else{
                PhoneEntityTaskM1Util.asdfa436(phoneEntityTask);
            }
        }
        //打开抖音扫推广码
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa437")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,3  );
            }else{
                PhoneEntityTaskM1Util.asdfa437(phoneEntityTask);
            }
        }
        //在小程序发布同款
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa438")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,4  );
            }else{
                PhoneEntityTaskM1Util.asdfa438(phoneEntityTask);
            }

            /*最后一个步骤的时候，更新资源状态*/
            updateResourceStatus(phoneEntityTask);
        }



        taskName = "a2";
        /*母号
        头像壁纸
        任务*/
        //抖音发布壁纸1
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa441")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,0  );
            }else{
                PhoneEntityTaskM2Util.asdfa441(phoneEntityTask);
            }
        }
        //抖推猫壁纸中心2
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa442")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,1  );
            }else{
                PhoneEntityTaskM2Util.asdfa442(phoneEntityTask);
            }
        }
        //设置分类并确认上传 3
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa443")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,2  );
            }else{
                PhoneEntityTaskM2Util.asdfa443(phoneEntityTask);
            }
            /*最后一个步骤的时候，更新资源状态*/
            updateResourceStatus(phoneEntityTask);
        }




        taskName = "a3";
        /*子号
        点击小程序链接
        任务*/
        //在抖音识别连接1
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa451")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,0  );
            }else{
                PhoneEntityTaskZ1Util.asdfa451(phoneEntityTask);
            }
        }
        //在小程序看完广告2
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa452")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,1 );
            }else{
                PhoneEntityTaskZ1Util.asdfa452(phoneEntityTask);
            }
            /*最后一个步骤的时候，更新资源状态*/
            updateResourceStatus(phoneEntityTask);
        }



        taskName = "a4";
        /*子号
        下载信息流视频图片
        任务*/
        //在抖音搜花海图册1
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa461")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,0 );
            }else{
                PhoneEntityTaskZ2Util.asdfa461(phoneEntityTask);
            }

        }
        //输口令看广告下载2
        if(phoneEntityTask.getTaskChildrenId().equals("asdfa462")){
            if(isOnlyCheck(phoneEntityTask)){
                TaskUtil.checkPointJob(phoneEntityTask,taskName,1 );
            }else{
                PhoneEntityTaskZ2Util.asdfa462(phoneEntityTask);
            }
            /*最后一个步骤的时候，更新资源状态*/
            updateResourceStatus(phoneEntityTask);
        }

    }

    private static boolean isOnlyCheck(PhoneEntityTask phoneEntityTask) {
        return !StringUtils.isEmpty(phoneEntityTask.getTag()) && phoneEntityTask.getTag().equals("onlyCheck");
    }

    private void updateResourceStatus(PhoneEntityTask phoneEntityTask) {
        System.out.println("更新手机状态为在线，表示已经完成本次任务。");
        PhoneEntity phoneEntity = phoneEntityMapper.selectById(phoneEntityTask.getEntityId());
        if(phoneEntity.getEntityStatus().equals(EntityEnums.EntityStatus.WARN.getName())){
            return;
        }
        phoneEntityMapper.update(
                new PhoneEntity().setEntityStatus(EntityEnums.EntityStatus.ONLINE.getName()),
                new QueryWrapper<PhoneEntity>().lambda().eq(PhoneEntity::getId,phoneEntityTask.getEntityId())
        );
    }






}
